package com.lucky.tjs.annotation;

import org.springframework.stereotype.Service;

import java.lang.annotation.*;

/**
 * @author TJS
 * @Description
 * @create 2023/5/12 6:21
 */
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD})
public @interface ElasticJobConfig {
    /*
        任务名称
     */
    String jobName();
    /*
        corn表达式
     */
    String cron();
    /*
        分片
     */
    int shardingTotalCount() default 1;
    /*
        任务描述
     */
    String jobDescription() default "";

    /**
     *个性化分片参数
     * 个性化参数可以和分片项匹配对应关系，用于将分片项的数字转换为更加可读的业务代码。
     * 例如：按照地区水平拆分数据库，数据库 A 是北京的数据；数据库 B 是上海的数据；数据库 C 是广州的数据。
     * 如果仅按照分片项配置，开发者需要了解 0 表示北京；1 表示上海；2 表示广州。 合理使用个性化参数可以让代码更可读，
     * 如果配置为 0=北京,1=上海,2=广州，那么代码中直接使用北京，上海，广州的枚举值即可完成分片项和业务逻辑的对应关系。
     */
    String shardingItemParameters() default "";

    String jobParameter() default "";

    boolean misfire() default false;

    boolean failover() default false;

    /*
        如果类型为DataflowJob ，则是否开启流式处理
     */
    boolean streamingProcess() default false;

    boolean monitorExecution() default true;

    boolean disabled() default  false;

    boolean overwrite() default true;

    int reconcileIntervalMinutes() default 10;

    int maxTimeDiffSeconds() default -1;
}
